package com.tul.exercise.base.object.chapter2eg;


import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertTrue;

/**
 * @Description 《java编程思想》第2章 示例3：
 *
 *  类static字段的定义
 *
 **/
public class StaticTest {
    // 类字段
    static int i = 47;

    // 获取类字段
    public int getStaticValue() {
        return i;
    }

    public static void increment() {
        i++;
    }

    @Test
    public void staticFieldTest () {
        StaticTest t1 = new StaticTest();
        StaticTest t2 = new StaticTest();

        // 对象可以调用类(静态)方法
        assertTrue(t1.getStaticValue() == 47);
        assertTrue(t2.getStaticValue() == 47);
        assertTrue(t2.getStaticValue() == t1.getStaticValue());
    }

    @Test
    public void test() {
        StaticTest t1 = new StaticTest();
        assertTrue(t1.getStaticValue() == 47);

        // 通过对象来调用类(静态)方法
        t1.increment();
        assertTrue(t1.getStaticValue() == 48);

        // 通过类来调用类(静态)方法
        StaticTest.increment();
        assertTrue(t1.getStaticValue() == 49);
    }
}
